package com.example.nbshopping;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;

import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;

import com.example.nbshopping.login.LoginRegActivity;
import com.example.nbshopping.login.PersonCenterActivity;
import com.example.nbshopping.login.UserBean;
import com.example.nbshopping.utils.SaveUserUtils;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    RadioGroup rg;
    Button fpagebtn,typebtn,mebt,logibtn,regbtn,cancelbtn;
    TextView logintv;
    DrawerLayout drawerLayout;
    //将当前activity包含的fragment放入同一集合
    List<Fragment> fragmentList;
    private FragmentManager fm;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        setListener();
        initFragment();
    }
    //activity获取到焦点调用此方法
    @Override
    protected void onResume() {
        super.onResume();
        setWelcomeText();//设置改变欢迎词
    }

    private void setWelcomeText() {
        UserBean.DataBean userInfo=SaveUserUtils.getUserInfo(this);
        if(userInfo==null){
            logintv.setText("未登录，请先登录！");
        }
        else {
            String nickname=userInfo.getNickname();
            String msg=nickname+"用户，\n欢迎您";
            logintv.setText(msg);
        }
    }

    //初始化fragment管理集合
    private void initFragment() {
        fragmentList =new ArrayList<>();
        fragmentList.add(new FPageFragment());
        fragmentList.add(new TypeFragment());
        fragmentList.add(new MeFragment());
        //将碎片添加到activity里
        //获取碎片管理者对象
       fm =getSupportFragmentManager();
       //2.获取碎片事物对象
       FragmentTransaction transaction=fm.beginTransaction();
        for (int i = 0; i <fragmentList.size() ; i++) {
            transaction.add(R.id.main_layout,fragmentList.get(i));
            transaction.hide(fragmentList.get(i));
        }
        transaction.show(fragmentList.get(0));
        transaction.commit();
    }
    //切换Fragment
    private  void changeFragment(int pos){
        FragmentTransaction transaction=fm.beginTransaction();
        for (int i = 0; i <fragmentList.size() ; i++) {
            transaction.hide(fragmentList.get(i));
        }
        transaction.show(fragmentList.get(pos));
        transaction.commit();
    }
    //设置监听事件
    private void setListener() {
        fpagebtn.setOnClickListener(onClickListener);
        typebtn.setOnClickListener(onClickListener);
        mebt.setOnClickListener(onClickListener);
        logibtn.setOnClickListener(onClickListener);
        regbtn.setOnClickListener(onClickListener);
        cancelbtn.setOnClickListener(onClickListener);
        rg.setOnCheckedChangeListener(onCheckedChangeListener);
    }
    //创建监听对象
    View.OnClickListener onClickListener=new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int id =v.getId();
            switch(id){
                case R.id.drawer_btn_fpage:
                    rg.check(R.id.main_rb1);
                    break;
                case R.id.drawer_btn_type:
                    rg.check(R.id.main_rb2);
                    break;
                case R.id.drawer_btn_me:
                    rg.check(R.id.main_rb3);
                    break;
                case R.id.drawer_btn_login:
                    /*判断是否登录了，如果登录就跳转到个人中心页面，如果没有登录，就跳转到登录页面*/
                    islogin(0);
                    break;
                case R.id.drawer_btn_reg:
                    islogin(1);
                    break;
                case R.id.drawer_btn_cancel:
                    exitlogin();
                    break;
            }
            drawerLayout.closeDrawers();//关闭抽屉
        }
    };
    //注销登录
    private void exitlogin() {
        UserBean.DataBean userInfo = SaveUserUtils.getUserInfo(this);
        if (userInfo==null) {
            Toast.makeText(this,"您还未登录账号！",Toast.LENGTH_SHORT).show();
        }
        else{
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("提示信息").setMessage("您是否退出登录？")
                    .setPositiveButton("取消",null)
                    .setNegativeButton("确定", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            //删除文件当中的内容
                            logintv.setText("未登录，请先登录！");
                            Toast.makeText(MainActivity.this,"注销成功！",Toast.LENGTH_SHORT).show();
                            SaveUserUtils.deleteUserInfo(MainActivity.this);
                        }
                    });
            builder.create().show();
        }
    }

    //判断是否登录，如果登录就跳转到个人中心页面,如果没有登录，就跳转到登录页面
    private void islogin(int flag) {
        UserBean.DataBean userInfo = SaveUserUtils.getUserInfo(this);
        if (userInfo==null) {
            Intent it1 = new Intent(MainActivity.this,LoginRegActivity.class);
            it1.putExtra("flag",flag);
            startActivity(it1);
        }else {
            Intent intent = new Intent(this, PersonCenterActivity.class);
            startActivity(intent);
        }
    }


    RadioGroup.OnCheckedChangeListener onCheckedChangeListener=new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            switch (checkedId){
                case R.id.main_rb1:
                    changeFragment(0);
                    break;
                case R.id.main_rb2:
                    changeFragment(1);
                    break;
                case R.id.main_rb3:
                    changeFragment(2);
                    break;
            }
        }
    };
    //查找控件
    private void initView() {
        rg=findViewById(R.id.main_rg);
        fpagebtn=findViewById(R.id.drawer_btn_fpage);
        typebtn=findViewById(R.id.drawer_btn_type);
        mebt=findViewById(R.id.drawer_btn_me);
        logibtn=findViewById(R.id.drawer_btn_login);
        regbtn=findViewById(R.id.drawer_btn_reg);
        cancelbtn=findViewById(R.id.drawer_btn_cancel);
        logintv=findViewById(R.id.drawer_tv_name);
        drawerLayout=findViewById(R.id.main_drawer);
    }
}